/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Security;

import Model.User;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 *
 * @author Hung
 */

public class AdminFilter implements Filter {
    

    // The filter configuration object we are associated with.  If
    // this value is null, this filter instance is not currently
    // configured. 
    private FilterConfig filterConfig = null;
    
    public AdminFilter() {
    }    
    

    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain)
            throws IOException, ServletException {
        HttpServletRequest req = (HttpServletRequest) request;
        HttpServletResponse rep = (HttpServletResponse) response;
        HttpSession session = req.getSession();
        System.out.println(req.getRequestURI().substring(12));
        User currentuser = (User) session.getAttribute("user");
        if(currentuser == null){
            session.setAttribute("url", req.getRequestURI().substring(12));
            rep.sendRedirect("../login.jsp");
            return;
            
        }
        else if(!currentuser.getRole().equals("admin")){
            
            rep.sendRedirect("../unauthorization.jsp");
            return;
        }
        else{
            chain.doFilter(req, rep);
            return;
        }
        
     
    }

    /**
     * Destroy method for this filter 
     */
    public void destroy() {        
    }


    public void init(FilterConfig filterConfig) throws ServletException{        
       
    }

    /**
     * Return a String representation of this object.
     */
    @Override
    public String toString() {
        if (filterConfig == null) {
            return ("AdminFilter()");
        }
        StringBuffer sb = new StringBuffer("AdminFilter(");
        sb.append(filterConfig);
        sb.append(")");
        return (sb.toString());
        
    }
    
   
}
